package com.qf.controller.dangan_controller;

import com.github.pagehelper.PageInfo;
import com.qf.bean.dangan.ResultVO;
import com.qf.bean.dangan.Users;
import com.qf.bean.dangan.dept;
import com.qf.service.dangan_service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/*
            敲得越多，钱越多！！！
            敲得越多，钱越多！！！
            敲得越多，钱越多！！！
*/
@Controller
public class UsersController {

    @Autowired
    private UsersService usersService;

    @RequestMapping("/getAllUsers")
    public String findAll(@RequestParam(defaultValue = "1")int index,@RequestParam(defaultValue = "1") int pageSize,ModelMap map){
        PageInfo<Users> users1 = usersService.findUsers(index, pageSize);
//        在这里可以知道stus为ftl页面的数据源
        List<Users> list = users1.getList();
        map.addAttribute("pageinfo",users1);
        map.addAttribute("pageSize",pageSize);
        map.addAttribute("index1",index);
        //此处因为配置了FreeMarker，所以自动为show补全的为/
        return "danganshow1";
    }

//    @RequestMapping("/getAllUsers1")
////    @ResponseBody这个注解通常使用在控制层（controller）的方法上，其作用是将方法的返回值以特定的格式写入到response的body区域，进而将数据返回给客户端。当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。
//    @ResponseBody
//    public List<Users> getAllUsers(@RequestParam(defaultValue = "1")int index,@RequestParam(defaultValue = "1") int pageSize,ModelMap map){
//        PageInfo<Users> users1 = usersService.findUsers(index, pageSize);
////        在这里可以知道stus为ftl页面的数据源
//        List<Users> list = users1.getList();
//        map.addAttribute("pageinfo",users1);
//        map.addAttribute("pageSize",pageSize);
//        map.addAttribute("index1",index);
//        /*       使用ajax传递数据，第一加pom依赖；第二spring-mvc加注解启动；第三加一个@ResponseBody注解，
//            之后把数据传递过去，此时集合自动转为json格式，属性为key值
//        */
//        //c此时因为为ajax，所以自动跳转到原来的页面，如果成功进入到success界面
//        return users1;
//    }

//    职位新增
    @RequestMapping("/add1")
    public String add1(){
        return "postadd";
    }

    @RequestMapping("/addUsers")
    public String add(String uname,String udescribe,ModelMap map){
        Users users = new Users();
        users.setUname(uname);
        users.setUdescribe(udescribe);
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        //以固定格式转化为String类型
        String format = simpleDateFormat.format(date);
        Date parse=null;
        try {
            //String转化为date类型
             parse = simpleDateFormat.parse(format);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        users.setStartdate(parse);
        users.setState(1);
        int addpost = usersService.addpost(users);
        return "getAllUsers";
    }

    @RequestMapping("/beforeupdate")
    public String beforeupdate(int uid, ModelMap map){
        Users updatepost = usersService.updatepost(uid);
        map.addAttribute("users",updatepost);
        return "updatepost";
    }

    @RequestMapping("/update")
    public String update(int uid, String uname, String udescribe){
        Users users = new Users();
        users.setUid(uid);
        users.setUname(uname);
        users.setUdescribe(udescribe);
        int update = usersService.update(users);
        return "getAllUsers";
    }

    //删除职位
    //此处为设以json来返回数据,
    @ResponseBody
    @RequestMapping("/delete")
    public ResultVO delete(int uid, HttpServletResponse response){
        int delete = usersService.delete(uid);
        //返回
        if (delete==1){
            return new ResultVO(0, "删除成功！", null);
        }
        return new ResultVO(1, "删除失败！", null);
    }


    //添加：获取部门列表
    @RequestMapping("/getDept")
    public String getDept(ModelMap map){
        List<dept> dept = usersService.findDept();
        map.addAttribute("dept",dept);
        //此处因为配置了FreeMarker，所以自动为show补全的为/
        return "addpeople2";
    }
    //添加：根据部门获取职位列表
    @ResponseBody
    @RequestMapping("/getroles")
    public List<Users> getroles(int did){
        List<Users> roles = usersService.findRoles(did);
        /*       使用ajax传递数据，第一加pom依赖；第二spring-mvc加注解启动；第三加一个@ResponseBody注解，
       之后把数据传递过去，此时集合自动转为json格式，属性为key值
        */
        //c此时因为为ajax，所以自动跳转到原来的页面，如果成功进入到success界面
        for (Users role : roles) {
            System.out.println(role.getUid()+"      "+role.getUname());
        }
        return roles;
    }


    @RequestMapping("/")
    public String shouye(){
        return "success";
    }

    @RequestMapping("/white")
    public String white(){
        return "white";
    }



}
